package co.edu.usbcali.sap.dataaccess.daoFactory;

import co.edu.usbcali.sap.dataaccess.dao.*;


/**
 * Factory for Data Access Objects Strategy The DAO pattern can be made highly flexible
 * by adopting the Abstract Factory [GoF] and the Factory Method [GoF] patterns.
 * When the underlying storage is not subject to change from one implementation to another,
 * this strategy can be implemented using the Factory Method pattern to produce a number of DAOs needed by the application.
 * This class is a Factory Method pattern
 *
 * @author Zathura Code Generator http://code.google.com/p/zathura
 */
public class XMLHibernateDaoFactory {
    private static XMLHibernateDaoFactory instance = null;

    private XMLHibernateDaoFactory() {
    }

    /**
    *
    * @return HibernateDaoFactory
    */
    public static XMLHibernateDaoFactory getInstance() {
        if (instance == null) {
            instance = new XMLHibernateDaoFactory();
        }

        return instance;
    }

    /**
    * This method instantiates the IActaSeguimientoProyectoGradoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IActaSeguimientoProyectoGradoDAO implementation
    */
    public IActaSeguimientoProyectoGradoDAO getActaSeguimientoProyectoGradoDAO() {
        return new ActaSeguimientoProyectoGradoDAO();
    }
    /**
     * This method instantiates the IProyectoLineaDAO class for HibernateCore
     * that is used in this applications deployment environment to access the data.
     * @return IProyectoLineaDAO implementation
     */
     public IProyectoLineaDAO getProyectoLineaDAO() {
         return new ProyectoLineaDAO();
     }

     /**
     * This method instantiates the IProyectoPalabraClaveDAO class for HibernateCore
     * that is used in this applications deployment environment to access the data.
     * @return IProyectoPalabraClaveDAO implementation
     */
     public IProyectoPalabraClaveDAO getProyectoPalabraClaveDAO() {
         return new ProyectoPalabraClaveDAO();
     }

    /**
    * This method instantiates the IAprobacionAnteproyectoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IAprobacionAnteproyectoDAO implementation
    */
    public IAprobacionAnteproyectoDAO getAprobacionAnteproyectoDAO() {
        return new AprobacionAnteproyectoDAO();
    }

    /**
    * This method instantiates the IComiteDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IComiteDAO implementation
    */
    public IComiteDAO getComiteDAO() {
        return new ComiteDAO();
    }

    /**
    * This method instantiates the IComiteRolperDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IComiteRolperDAO implementation
    */
    public IComiteRolperDAO getComiteRolperDAO() {
        return new ComiteRolperDAO();
    }

    /**
    * This method instantiates the IDocumentosProyectoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IDocumentosProyectoDAO implementation
    */
    public IDocumentosProyectoDAO getDocumentosProyectoDAO() {
        return new DocumentosProyectoDAO();
    }

    /**
    * This method instantiates the IEstadoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IEstadoDAO implementation
    */
    public IEstadoDAO getEstadoDAO() {
        return new EstadoDAO();
    }

    /**
    * This method instantiates the IFaseProyectoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IFaseProyectoDAO implementation
    */
    public IFaseProyectoDAO getFaseProyectoDAO() {
        return new FaseProyectoDAO();
    }

    /**
    * This method instantiates the ILineaInvestigacionDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ILineaInvestigacionDAO implementation
    */
    public ILineaInvestigacionDAO getLineaInvestigacionDAO() {
        return new LineaInvestigacionDAO();
    }

    /**
    * This method instantiates the IPalabraClaveDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IPalabraClaveDAO implementation
    */
    public IPalabraClaveDAO getPalabraClaveDAO() {
        return new PalabraClaveDAO();
    }

    /**
    * This method instantiates the IPersonaDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IPersonaDAO implementation
    */
    public IPersonaDAO getPersonaDAO() {
        return new PersonaDAO();
    }

    /**
    * This method instantiates the IProyectoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IProyectoDAO implementation
    */
    public IProyectoDAO getProyectoDAO() {
        return new ProyectoDAO();
    }

    /**
    * This method instantiates the IProyectoPersonaRolDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IProyectoPersonaRolDAO implementation
    */
    public IProyectoPersonaRolDAO getProyectoPersonaRolDAO() {
        return new ProyectoPersonaRolDAO();
    }

    /**
    * This method instantiates the IReciboProyectoGradoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IReciboProyectoGradoDAO implementation
    */
    public IReciboProyectoGradoDAO getReciboProyectoGradoDAO() {
        return new ReciboProyectoGradoDAO();
    }

    /**
    * This method instantiates the IRevisionProyectoGradoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRevisionProyectoGradoDAO implementation
    */
    public IRevisionProyectoGradoDAO getRevisionProyectoGradoDAO() {
        return new RevisionProyectoGradoDAO();
    }

    /**
    * This method instantiates the IRolDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return IRolDAO implementation
    */
    public IRolDAO getRolDAO() {
        return new RolDAO();
    }

    /**
    * This method instantiates the ITipoDocumentoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ITipoDocumentoDAO implementation
    */
    public ITipoDocumentoDAO getTipoDocumentoDAO() {
        return new TipoDocumentoDAO();
    }

    /**
    * This method instantiates the ITipoProyectoDAO class for HibernateCore
    * that is used in this applications deployment environment to access the data.
    * @return ITipoProyectoDAO implementation
    */
    public ITipoProyectoDAO getTipoProyectoDAO() {
        return new TipoProyectoDAO();
    }
}
